package com.answer.petsale.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.answer.petsale.model.dto.order.OrderCreateRequest;
import com.answer.petsale.model.dto.order.OrderQueryRequest;
import com.answer.petsale.model.entity.Order;
import com.answer.petsale.model.entity.User;
import com.answer.petsale.model.vo.OrderVO;

/**
 * 订单服务接口
 *
 * @author answer
 */
public interface OrderService extends IService<Order> {

    /**
     * 用户提交预定申请（创建一个待审核的订单）
     * @param orderCreateRequest 订单创建请求
     * @param loginUser 当前登录用户
     * @return 新的待审核订单的ID
     */
    long createOrder(OrderCreateRequest orderCreateRequest, User loginUser);

    /**
     * 管理员批准一个订单申请
     * @param orderId 要批准的订单ID
     * @return 是否批准成功
     */
    boolean approveOrder(long orderId);

    // START: 新增代码
    /**
     * 管理员拒绝一个订单申请
     * @param orderId 要拒绝的订单ID
     * @param reason 拒绝的理由
     * @return 是否拒绝成功
     */
    boolean rejectOrder(long orderId, String reason);
    // END: 新增代码

    /**
     * 将 Order 实体转换为 OrderVO 视图
     */
    OrderVO getOrderVO(Order order);

    /**
     * 获取查询条件包装器
     */
    QueryWrapper<Order> getQueryWrapper(OrderQueryRequest orderQueryRequest);
}